package com.zzl.springboot_mybatis_demo.service.user;

import com.github.pagehelper.PageInfo;
import com.zzl.springboot_mybatis_demo.entity.user.User;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;

import java.util.List;

/**
 * Description：用户服务接口
 * Created by 朱正磊 on 2019-06-16 16:43
 */
public interface UserService {

    /**
     * description：根据主键查询唯一数据
     * user 朱正磊
     * time 2019-06-16 17:06
     * @param id 主键
     * @return 返回唯一数据
     */
    User findUserById(Integer id);

    /**
     * description：根据主键查询唯一数据
     * （该方法仅仅只是用来模拟如果没有查询到数据，返回的集合是null，还是不为null但是集合元素个数为0）
     * user 朱正磊
     * time 2019-06-16 17:06
     * @param userId 主键
     * @return 返回集合数据
     */
    List<User> findUserByUserId(Integer userId);

    /**
     * description：获取我的配置文件属性内容信息
     * user 朱正磊
     * time 2019-06-16 22:06
     * @return 返回配置信息
     */
    String getMyowner();

    /**
     * description：查询所有的用户信息并分页显示
     * user 朱正磊
     * time 2019-06-16 23:06
     * @param pageNum 开始页数
     * @param pageSize 每页显示的数据条数
     * @return 返回用户分页列表
     */
    List<User> findAll(Integer pageNum, Integer pageSize);

    /**
     * description：分页查询所有的用户信息
     * user 朱正磊
     * time 2019-06-16 23:06
     * @param pageNum 开始页数
     * @param pageSize 每页显示的数据条数
     * @return 返回用户分页列表
     */
    PageInfo<User> findAll2(Integer pageNum, Integer pageSize);

    /**
     * description：仅仅测试@NonNull和@Nullable的使用
     * user 朱正磊
     * time 2019-08-24 19:31
     * @param username 用户名
     * @param password 密码
     * @return 返回测试内容
     */
    String testNonNull(@NonNull String username, @Nullable String password);

    /**
     * description: 新增一条用户记录
     * @author 朱正磊
     * @date 2019-09-04 10:43:42
     * @param user 用户对象
     * @return 返回操作数据库状态
     */
    Integer addUser(User user);

}
